﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
using RRHH.Entities;
using RRHH.BusinessLogic;

namespace SOAPService
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IService1" in both code and config file together.
    [ServiceContract]
    public interface IRRHHService
    {

        // INI CAMBIOS BENITES
        [OperationContract]
        BEPersonal CrearPersonal(BEPersonal personal);
        // FIN CAMBIOS BENITES

        [OperationContract]
        bool ModificarPersonal(int personalID, string nombre, string apellidoPaterno, string apellidoMaterno);
        [OperationContract]
        BEPersonal ObtenerPersonal(int personalID);
        [OperationContract]
        bool EliminarPersonal(int personalID);
        [OperationContract]
        List<BEPersonal> ListarPersonal();
        [OperationContract]
        List<String> ConsultarContratosAVencer();
        [OperationContract]
        BEPersonal Obtener_x_ID(int personalID);


        // INI CAMBIOS BENITES
        [OperationContract]
        List<BEEstCivil> ListarEstadosCivil();

        [OperationContract]
        List<BEDepartamento> ListDepartamento();

        [OperationContract]
        List<BEProvincia> ListProvincia(int idDep);

        [OperationContract]
        List<BEDistrito> ListDistrito(int idDep, int idProv);

        // FIN CAMBIOS BENITES



        ////METODOS DE CONTRATOS
        [OperationContract]
        BEContrato CrearContrato(BEContrato contrato);

        //[OperationContract]
        //CONTRATO1 CrearContrato(int IDCONTRATO, DateTime FECHAINICIO, DateTime FECHAFIN, string IDTIPOEXTINCION,
        //                        string CODIGOEMPLEADO, int IDPERSONAL1, decimal SALARIORECIBO, int IDCARGO,
        //                        int IDESTADO, DateTime FECHACREACION, int VIGENTE, string IDTIPOCONTRATO,
        //                        string FLAGCESADO, DateTime FECHAEXTINCION, string ESTADO);
        //[OperationContract]
        //bool ModificarContrato(int IDCONTRATO, DateTime FECHAINICIO, DateTime FECHAFIN, string IDTIPOEXTINCION,
        //                        string CODIGOEMPLEADO, int IDPERSONAL1, decimal SALARIORECIBO, int IDCARGO,
        //                        int IDESTADO, DateTime FECHACREACION, int VIGENTE, string IDTIPOCONTRATO,
        //                        string FLAGCESADO, DateTime FECHAEXTINCION, string ESTADO);
        //[OperationContract]
        //CONTRATO1 ObtenerContrato(int IDCONTRATO);
        //[OperationContract]
        //bool EliminarContrato(int IDCONTRATO);
        [OperationContract]
        List<BEContrato> ListarContrato(int personalID);

        /************************************************************************************************************
        *                                              CARGO
        * **********************************************************************************************************/
        [OperationContract]
        List<BECargo> ListarCargo();

        /************************************************************************************************************
        *                                              TIPOCONTRATO
        * **********************************************************************************************************/

        [OperationContract]
        List<BETipoContrato> ListarTipoContrato();

        /************************************************************************************************************
        *                                              ESTADO CONTRATO
        * **********************************************************************************************************/

        [OperationContract]
        List<BEEstadoContrato> ListarEstadoContrato();

        /************************************************************************************************************
         *                                              T-REGISTRO
         * **********************************************************************************************************/
        [OperationContract]
        List<BEMaestroPersonal> ListarIngresosPersonal();
        [OperationContract]
        BEIngresoTRegistro EnvioIngresoTRegistro(int personalID, string codigoEmpleado);
        [OperationContract]
        int ActualizarMPTRegistro(BEMaestroPersonal _BEMaestroPersonal);

        /************************************************************************************************
        *                          J. SALCEDO MAESTROPERSONAL
        * **********************************************************************************************/
        [OperationContract]
        List<BEMaestroPersonal> ListarMaestroPersonalXIDPersonal(int personalID);

        [OperationContract]
        BEMaestroPersonal BuscarMaestroPersonalXID(int personalID, string codigoEmpleado);

        [OperationContract]
        int RegistrarMaestroPersonal(BEMaestroPersonal _BEMaestroPersonal);

        [OperationContract]
        int ModificarMaestroPersonal(BEMaestroPersonal _BEMaestroPersonal);


        /****************************************************************************************
         *                                  MAESTRO PERSONAL   
         * ****************************************************************************************/
        [OperationContract]
        List<BEBanco> ListarBanco();

        [OperationContract]
        List<BECatalogo> ListarCatalogo(BECatalogo _OBECatalogo);

        [OperationContract]
        List<BECategoriaEmpleado> ListarCategoriaEmpleado();

        [OperationContract]
        List<BECentroCosto> ListarCentroCosto();

        [OperationContract]
        List<BEClasePlanilla> ListarClasePlanilla();

        [OperationContract]
        List<BEEmpresa> ListarEmpresa();

        [OperationContract]
        List<BEEps> ListarEPS();


        /****************************************************************************************
        *                                 USUARIO   
        * ****************************************************************************************/
        
        [OperationContract]
        BEAcceso ValidarUsuario(BEAcceso _usu, ref int cantidad);

        [OperationContract]
        List<BEContrato> GestContratosVencidos();
         [OperationContract]
        int ActualizarEstadoMPTRegistro(BEMaestroPersonal _BEMaestroPersonal);
   
    }
}
